iT邦幫忙

2023 iThome 鐵人賽

DAY 6
1
Modern Web

什麼!在網頁上也可以寫遊戲?系列 第 6

[Day 06] 事件表實作 - 檢查篇(中)

  • 分享至 

  • xImage
  •  

昨天我們示範了檢查的設置,並簡單的介紹了一些跟數字比較有關的符號,當中我有提到了兩個比較特別的符號,分別為 && 以及 ||,今天就是要來重點介紹它們是如何存在於事件表中的,如何運作,並且又該如何使用呢?

邏輯規則

在回到事件表之前,讓我們先來認識一下,這兩組符號所代表的意義。昨天我僅有標示它們分別是且和或的意思,不過就算單看這兩個中文字,其實應該也能夠大概猜到它們的用途,但我在這邊還是特別介紹一下。

  • &&且、並且、而且的意思,直接以中文句子來表達的話,就會像是「如果小明的分數大於等於 80,並且小於 90,就給他評級為 B。」,不知道各位在小學拿回作業時,上面會不會被寫上 A、B、C、D 等的英文分數呢?如果把評分的規則用文字表達出來,就像是這樣子,可以看到我們需要判斷兩件事情,第一件事是分數有沒有大於等於 80,第二件事是分數有沒有小於 90,在上面的中文句子中,我們使用「並且」來連接這兩件事情,只是在程式碼中,一般是使用 && 來表示而已。
  • ||的意思,了解了上面的 && 之後,這個就簡單了,同樣舉個例子「如果碗裡面有青椒,或碗裡面有番茄,就把心情值扣 50。」,不知道各位小時候會不會這樣,還是只有我?同樣的有兩件事情要判斷,同樣是做為一個連接詞,不同的是只要其中一邊的條件達成之後,整個判斷式就會被通過。
// Typescript
if(分數 >= 80 && 分數 < 90)
if(青椒 == 1 || 番茄 == 1) // 1 代表有的意思。

除了 && 和 || 以外,有些程式碼也會直接以英文單字來表示,例如 Python 的 && 就是直接寫成 and,而 || 就是寫成 or,而這個部分其實在事件表中也是一樣。

# Python
if 分數 >= 80 and 分數 < 90:
if 青椒 == 1 or 番茄 == 1

檢查中的邏輯規則

每個事件當中,不管是動作、檢查、觸發,可以設置的數量都是沒有上限的,也就是說我們可以設置很多個不同的檢查,而預設必須是每個檢查都通過時,事件才會執行動作。

所有的檢查裡面,都會有如上圖的邏輯規則,包含昨天介紹的 計算人數 也是,預設為空。

_and_or

打開選單後就可以發現裡面藏了 AND 和 OR,就像我上面補充的 Python,這裡也是以英文單字來表示,而若將滑鼠移動到圖中 _and_or 後面的 ? 上面,會顯示以下訊息。

定義這個檢查與上一個檢查的關係。
AND: 與上一個檢查合併為一個大檢查
OR: 若上一個檢查不通過,則執行這個檢查。若上一個檢查已通過,則跳過這個檢查

上圖是我新增的兩個事件內的檢查,上方就是 AND 在事件表中呈現的樣子,而下方就是 OR,兩者都是由第二個檢查去設定邏輯規則,就像提示訊息內所說的一樣,有設定的檢查會跟上一個檢查合併。

其實如果只看這樣子的話,AND 可以說是有跟沒有一樣,因為事件中的檢查本來就是預設需要全部通過,其實就相當於全部都是 AND 一樣,這麼一說,我用了這麼久的 CG 好像還真沒用過這個 AND。

比較數字:顧名思義就是比較兩個數字之間的大小關係。

_not

接下來就是 _not 的部分了,這個部分就比較簡單了,同樣的先來看看 ? 內的提示。

若勾選,則反轉檢查的結果

有勾選 not 的檢查就會呈現上圖的樣子,就如同提示所說的,它的用途就是把檢查的結果反轉,也就是原本通過的檢查會變成不通過,不通過則會變成通過。

除了邏輯規則以外,下方其實還有一欄叫做 否則觸發事件ID 如上圖,不過這個我們會留到觸發篇一起介紹,因為這通常會跟觸發的某項設定一起使用。

CG 範例事件表

今天的範例比較特別,事件中並沒有任何動作,並且測試該事件表時也不會啟動光暈戰記遊戲,主要是為了測試檢查的執行結果而已。

其實在事件表中,當事件通過檢查,即將執行動作時,會在下方的控制台中輸出事件名稱,以及 about to trigger 的訊息,而該事件的所有動作觸發完畢時,則會輸出 actions complete,今天的範例主要就是根據事件表中的檢查,配合控制台來看看,哪些事件有被觸發。

總結

今天主要重點介紹了檢查中的邏輯規則,雖然剛開始其實很少有機會會需要更改邏輯規則,不過這個也算是基礎的功能,所以早點了解也不壞。

從今天的標題可以看出我們的檢查篇還沒有結束,因為還有一個最重要的功能還沒介紹,那就是 迴圈型檢查,這個就比較特別了,很多時候這種檢查並不是要用來判斷某件事情的,而是要它可以重複執行事件的功能,這時候認真的同學可能就會問,事件不是本來就可以重複執行了嗎?沒錯,所以明天我就會來為各位解答這個部分啦~


上一篇
[Day 05] 事件表實作 - 檢查篇(上)
下一篇
[Day 07] 事件表實作 - 檢查篇(下)
系列文
什麼!在網頁上也可以寫遊戲?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言